SQL IN Operator

IN ऑपरेटर आपको WHERE क्लॉज में कई मान निर्दिष्ट करने की अनुमति देता है

SQL IN ऑपरेटर

WHERE क्लास में IN ऑपरेटरअनेक मानआपको निर्दिष्ट करने की अनुमति देता है

IN ऑपरेटर एकाधिक OR शर्तों का संक्षिप्त रूप है।

उदाहरण

'जर्मनी', 'फ़्रांस', या 'यूके' से सभी ग्राहकों को वापस लौटाने के लिए:

SELECT * FROM Customers
WHERE Country IN ('Germany', 'France', 'UK');

💡नोट:

एकाधिक OR शर्तों को लिखने की तुलना में IN ऑपरेटर सरल और आसान है।

वाक्यविन्यास में

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);

प्रदर्शन डेटाबेस

नीचे उदाहरणों में प्रयुक्त ग्राहक तालिका से एक चयन दिया गया है:

CustomerID CustomerName ContactName Address City PostalCode Country
1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 05021 Mexico
3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México D.F. 05023 Mexico
4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK
5 Berglunds snabbköp Christina Berglund Berguvsvägen 8 Luleå S-958 22 Sweden

NOT IN

IN ऑपरेटर से पहले NOT कीवर्ड का उपयोग करके किसी सूची में मानकुछ नहींआप सभी रिकॉर्ड वापस कर दें.

उदाहरण

'जर्मनी', 'फ्रांस' या 'यूके' से बाहर के सभी ग्राहकों को वापस करने के लिए:

SELECT * FROM Customers
WHERE Country NOT IN ('Germany', 'France', 'UK');

कुछ देशों को छोड़कर

निर्दिष्ट देशों को छोड़कर अन्य सभी

SELECT * FROM Customers
WHERE Country NOT IN ('USA', 'Canada');

कुछ शहरों को छोड़कर

निर्दिष्ट शहरों को छोड़कर अन्य सभी

SELECT * FROM Customers
WHERE City NOT IN ('London', 'Paris', 'Berlin');

IN (SELECT)

IN का उपयोग WHERE क्लॉज में सबक्वेरी के साथ भी किया जा सकता है।

सबक्वेरी के साथ, सभी रिकॉर्ड सबक्वेरी के अंत में मुख्य क्वेरी से पुनर्प्राप्त किए जा सकते हैं।

उदाहरण

ऑर्डर तालिका में ऑर्डर रखने वाले सभी ग्राहकों को वापस करने के लिए:

SELECT * FROM Customers
WHERE CustomerID IN (SELECT CustomerID FROM Orders);

🔍महत्वपूर्ण नोट:

सबक्वेरीज़ जटिल फ़िल्टरिंग के लिए उपयोगी हैं। वे एक टेबल से दूसरी टेबल पर जुड़ने में मदद करते हैं।

NOT IN (SELECT)

उपरोक्त उदाहरण में परिणाम में 74 रिकॉर्ड मिले जिसका अर्थ है कि 17 ग्राहकों ने कोई ऑर्डर नहीं दिया।

यह सही है या नहीं यह जांचने के लिए हम NOT IN ऑपरेटर का उपयोग कर सकते हैं।

उदाहरण

उन सभी ग्राहकों को वापस लौटाने के लिए जिन्होंने ऑर्डर तालिका में कोई ऑर्डर नहीं दिया है:

SELECT * FROM Customers
WHERE CustomerID NOT IN (SELECT CustomerID FROM Orders);

IN बनाम एकाधिक OR स्थितियाँ

आईएन ऑपरेटर

WHERE Country IN 
('Germany', 'France', 'UK');
  • संक्षिप्त और स्पष्ट
  • कदम उठाना आसान
  • बनाए रखना आसान है
  • कम गलतियाँ
  • मूल्य जितने ऊंचे होंगे, उतना अच्छा होगा

एकाधिक OR स्थितियाँ

WHERE Country = 'Germany' 
OR Country = 'France' 
OR Country = 'UK';
  • लंबा और जटिल
  • कदम रखना मुश्किल
  • बनाए रखना मुश्किल है
  • और भी गलतियाँ
  • केवल जब मान कम हों

शैली के उदाहरण

कुछ कर्मचारी

विशिष्ट आईडी वाले कर्मचारी

SELECT * FROM Employees
WHERE EmployeeID IN (101, 105, 108, 112);

विशिष्ट उत्पाद

विशिष्ट श्रेणियों में आइटम

SELECT * FROM Products
WHERE CategoryID IN (1, 3, 5);

सक्रिय ग्राहक

कम से कम एक ऑर्डर वाले ग्राहक

SELECT * FROM Customers
WHERE CustomerID IN (
  SELECT DISTINCT CustomerID 
  FROM Orders
);

उन्नत सामग्री

वे वस्तुएँ जो एक निश्चित मूल्य सीमा के अंतर्गत नहीं हैं

SELECT * FROM Products
WHERE Price NOT IN (10, 20, 30, 40);

उन्नत उदाहरण

एकाधिक टेबल

दो तालिकाओं से डेटा

SELECT * FROM Products
WHERE SupplierID IN (
  SELECT SupplierID 
  FROM Suppliers 
  WHERE Country = 'USA'
);

तिथि सीमा

विशिष्ट महीनों में ऑर्डर

SELECT * FROM Orders
WHERE MONTH(OrderDate) IN (1, 2, 12);

तलुकदम माल

विशिष्ट छूट दरें

SELECT * FROM Products
WHERE Discount IN (10, 15, 20, 25);

मूल्यांकन सीमा

विशिष्ट रेटिंग वाले आइटम

SELECT * FROM Products
WHERE Rating IN (4, 5);

प्रदर्शन युक्तियाँ

🚀प्रदर्शन में सुधार:

  • कोड उपयोग:उन प्रोग्रामों में कोड बनाएं जो IN ऑपरेटर का उपयोग करते हैं
  • मानों की संख्या:बहुत ऊंचे मूल्यों से बचें (100+)
  • अनुपूरक प्रश्न:बड़ी उपश्रेणियों के लिए EXISTS का उपयोग करें
  • डेटा के प्रकार:सुनिश्चित करें कि मान सही डेटा प्रकार में हैं

⚠️बचने योग्य बातें:

  • बहुत लंबी मूल्य सूचियाँ
  • धीमे सहायक प्रश्न
  • सही डेटा प्रकार का अभाव
  • कोड का अभाव

अभ्यास

SQL IN ऑपरेटर का प्राथमिक उद्देश्य क्या है?

WHERE क्लॉज में मानों की एक श्रृंखला निर्दिष्ट करने के लिए
✗ ग़लत! यह BETWEEN ऑपरेटर का काम है
सूची से सभी प्रोग्राम चुनें
✗ ग़लत! ये है SELECT का काम*
WHERE क्लॉज में एकाधिक मान निर्दिष्ट करने के लिए
✓ ठीक है! IN ऑपरेटर का उपयोग WHERE क्लॉज में एकाधिक मान निर्दिष्ट करने के लिए किया जाता है
वाइल्डकार्ड खोज करें
✗ ग़लत! यह LIKE ऑपरेटर का काम है